package grafica;

import javax.swing.*;
import sprite.estatico.SpriteObstaculo;

/**
 * La clase GraficaComponentes independiza al fondo y a Mario de los componentes
 * que conforman al nivel. Consta de un JPanel (panelComponentes) al que, con el
 * metodo agregarObstaculo, se le agregan tantos JLabels como obstaculos tenga
 * el nivel
 * 
 * @author Agustin Orge (LU.85538)
 * @author Victoria Martinez de la Cruz (LU.87620)
 */
public class GraficaComponentes {

	/** The panel componentes. */
	private JPanel panelComponentes;

	/** Pool de iconos obstaculos **/
	private SpriteObstaculo iconos;

	/**
	 * Constructor de GraficaComponentes.
	 */
	public GraficaComponentes() {
		iconos = new SpriteObstaculo();
		panelComponentes = new JPanel(null);
		panelComponentes.setOpaque(false);
		panelComponentes.setLayout(null);
		panelComponentes.setSize(3957, 260);
		panelComponentes.setLocation(0, 0);
	}

	/**
	 * Retorna el panel
	 * 
	 * @return panelComponentes
	 */
	public JPanel getPanel() {
		return panelComponentes;
	}

	/**
	 * Retorna el pool de sprites de obstaculos
	 * 
	 * @return iconos
	 */

	public SpriteObstaculo getIconos() {
		return iconos;
	}

	/**
	 * Agrega un nuevo obstaculo pasado por parametro
	 * 
	 * @param ca
	 *            Casillero en el que se agrega el obstaculo
	 */
	public void agregarObstaculo(JLabel nuevoObstaculo) {
		nuevoObstaculo.setSize(16, 16);
		panelComponentes.add(nuevoObstaculo);
	}

	/**
	 * Remueve el obstaculo pasado por parametro
	 * 
	 * @param obstaculo
	 *            etiqueta de obstaculo a agregar
	 */
	public void removerObstaculo(JLabel obstaculo) {
		panelComponentes.remove(obstaculo);
	}

	/**
	 * Reemplaza una etiqueta por otra pasadas por parametro
	 * 
	 * @param obstaculo
	 *            etiqueta a reemplazar
	 * @param nuevoObstaculo
	 *            nueva etiqueta
	 */
	public void reemplazarObstaculo(JLabel obstaculo, JLabel nuevoObstaculo) {
		removerObstaculo(obstaculo);
		nuevoObstaculo.setLocation(obstaculo.getLocation().x,
				obstaculo.getLocation().y);
		nuevoObstaculo.setSize(16, 16);
		panelComponentes.add(nuevoObstaculo);
	}

}
